在 Flutter 里使用 Packages 您所在的位置:网站首页 package in 在 Flutter 里使用 Packages

在 Flutter 里使用 Packages

2023-12-09 21:31| 来源: 网络整理| 查看: 265

在 Flutter 里使用 Packages Contents

使用 package

搜索 package

将 package 依赖添加到应用

使用命令 flutter pub add 添加一个 package 依赖

使用 flutter pub remove 命令移除一个 package 依赖

冲突解决

开发新的 package

管理 package 的依赖和版本

Package 版本

更新 package 依赖

依赖未发布的 package

例子

例子:使用 CSS Colors package

例子:使用 url_launcher package 来打开浏览器

Flutter 支持使用其他开发者向 Flutter 和 Dart 生态系统贡献的共享 package,这意味着你可以快速构建应用而不是一切从零开始。

Package 和插件 (plugin) 有什么区别呢? 插件 (plugin) 是 package 的一种,全称是 plugin package,我们简称为 plugin,中文叫插件。

Packages Dart package 最低要求是包含一个 pubspec.yaml 文件。此外,一个 package 可以包含依赖关系 (在 pubspec.yaml 文件里声明)、 Dart 库、应用、资源、字体、测试、图片和例子等。 pub.dev 上列出了很多 package,由 Google 工程师和 Flutter 和 Dart 社区的开发者开发和发布,你可以用在自己的应用里。

Plugins 插件 (plugin package) 是一种特别的 package,特别指那些帮助你获得原生平台特性的 package。插件可以为 Android (使用 Kotlin 或 Java 语言)、 iOS (使用 Swift 或 Objective-C 语言)、Web、macOS、Windows、Linux 平台,或其任意组合的平台编写。比如:某个插件可以为 Flutter 应用提供使用原生平台的摄像头的功能。

现有的 package 支持许多使用场景,例如,网络请求 (http),自定义导航/路由处理 (go_router),集成设备 API(如 (url_launcher 和 battery,以及使用第三方平台的 SDK(如 Firebase 的 (FlutterFire)。

如果你正打算开发新的 package,请参阅 Flutter Packages 的开发和提交。如果你想添加资源、图片或字体,无论是存储在文件中还是 package 中,请参阅 添加资源和图片 这篇文档。

使用 package

下面的内容将为你描述如何使用已经发布了的 packages。

搜索 package

Package 会被发布到 pub.dev 网站上。

Pub 网站上的 Flutter 页面 展示了与 Flutter 兼容的 package(即声明的依赖通常与 Flutter 兼容),并且所有已发布的 package 都支持搜索。

Pub.dev 上的 Flutter Favorites 页面列出了一系列编写应用时可以首先考虑使用的插件和 package,关于这个项目的更多信息,请查看 Flutter Favorites 项目 页面。

在 pub.dev 网站上你可以同时过滤出适合 Android、iOS、Web、Linux、 Windows 或 macOS 的插件,你也可以通过复选框,过滤出组合结果(适配一个或者多个平台)。

将 package 依赖添加到应用

要将 package ‘css_colors’ 添加到应用:

添加依赖

打开应用文件夹下的 pubspec.yaml 文件,然后在 pubspec.yaml 下添加 css_colors:。

安装

在命令行中运行:flutter pub get

或者

在 VS Code 中点击位于 pubspec.yaml 文件顶部操作功能区右侧的 Get Packages

在 Android Studio/IntelliJ 中点击 pubspec.yaml 文件顶部操作功能区的 Packages get

导入

在 Dart 代码中添加相关的 import 语句。

如果有必要,停止并重启应用

如果 package 内有特定平台的代码(Android 的 Java/Kotlin, iOS 的 Swift/Objective-C),代码必须内置到你的应用内。热重载和热重启只对 package 的 Dart 代码执行此操作,所以你需要完全重启应用以避免使用 package 时出现 MissingPluginException 错误。

使用命令 flutter pub add 添加一个 package 依赖

将 css_colors 这个 package 添加到工程中:

在项目根目录执行命令

flutter pub add css_colors

导入

在 Dart 代码中添加相应的 import 语句

如果有必要,停止并重启应用

如果 package 内有特定平台的代码(Android 的 Java/Kotlin, iOS 的 Swift/Objective-C),代码必须内置到你的应用内。热重载和热重启只对 package 的 Dart 代码执行此操作,所以你需要完全重启应用以避免使用 package 时出现 MissingPluginException 错误。

使用 flutter pub remove 命令移除一个 package 依赖

要将 package ‘css_colors’ 从工程中移除:

在项目根目录执行命令

flutter pub remove css_colors

对于这些步骤,Pub 上任何 package 页面的 Installing tab 选项卡都是一个很方便的参考。

完整示例,参阅下面的 css_colors 示例。

冲突解决

假设你想在应用中使用 some_package 和 other_package,并且它们依赖于不同版本的 url_launcher。于是我们便有了潜在的冲突。避免这种情况的最好方法是 package 的作者在指定依赖项时使用 版本范围 而非特定版本。

dependencies: url_launcher: ^5.4.0 # Good, any version >= 5.4.0 but < 6.0.0 image_picker: '5.4.3' # Not so good, only version 5.4.3 works.

如果 some_package 声明了以上依赖,并且 another_package 声明了一个兼容的 url_launcher 依赖项,如 '5.4.6' 或 ^5.5.0, pub 能够自动解决冲突问题。 Gradle modules 和 CocoaPods 也是用类似的方式解决平台依赖的。

即使 some_package 和 another_package 声明了不兼容的 url_launcher 版本,它们实际上仍可能以兼容的方式使用 url_launcher。在这种情况下,可在 pubspec.yaml 文件中添加一个依赖覆盖声明来强制使用特定版本,从而处理冲突。

为了强制使用版本为 5.4.0 的 url_launcher,你可以对应用的 pubspec.yaml 文件做如下更改:

dependencies: some_package: another_package: dependency_overrides: url_launcher: '5.4.0'

如果依赖冲突项不是 package 自身,而是如 guava 这样特定于 Android 的库,那么依赖的覆盖声明必须添加到 Gradle 的构建逻辑中。

为了强制使用版本为 28.0 的 guava,你可以对 android/build.gradle 文件做如下更改:

configurations.all { resolutionStrategy { force 'com.google.guava:guava:28.0-android' } }

CocoaPods 目前尚不提供依赖项覆盖功能。

开发新的 package

如果某个 package 不适用于你的特定需求,你可以 开发新的自定义 package。

管理 package 的依赖和版本

为了使版本冲突的风险最小化,请在 pubspec.yaml 文件中指定一个版本范围。

Package 版本

所有 package 都有一个版本号,在它们的 pubspec.yaml 文件中指定。当前的 package 版本会在其名称旁边显示当前版本号。(例如,参阅 url_launcher package)以及所有先前版本的列表: url_launcher 版本列表。

为了确保在更新 package 的时候你的应用不会崩溃,我们建议使用以下格式之一来指定版本范围:

范围限制:指定一个最小和最大的版本号,例如:

dependencies: url_launcher: '>=5.4.0


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有